#ifndef __WIZ_SP_TRACE_HPP__SHANHAOBO_19800429__
#define __WIZ_SP_TRACE_HPP__SHANHAOBO_19800429__

#include "./WizSPForwardDeclare.hpp"

namespace Wiz
{
    namespace SP
    {
        namespace Trace
        {
            namespace Info
            {
                struct Type
                {
                    virtual ~Type(){}
                };
            } /// end of namespace Info

            namespace Result
            {
                template<typename StartToEndTimeT, typename LocationT, typename DirectionT, typename DataT>
                struct Type : public ::Wiz::Operators::EqualityComparable1< Type<StartToEndTimeT, LocationT, DirectionT, DataT> >
                {
                    typedef StartToEndTimeT         tStartToEndTime;
                    typedef LocationT               tLocation;
                    typedef DirectionT              tDirection;
                    typedef DataT                   tData;

                    typedef Type<tStartToEndTime, tLocation, tDirection, tData> tThis;

                    tStartToEndTime   m_Time;

                    tLocation         m_Location;
                    tDirection        m_Normal;
                    tData             m_Data;

                    WIZ_INLINE friend ::Wiz::Bool::Type operator<(const tThis& x, const tThis& y)
                    {
                        return x.m_Time < y.m_Time;
                    }
                };
            } /// end of namespace Result
        } /// end of namespace Trace
    } /// end of namespace SP
} /// end of namespace Wiz

#endif /*__WIZ_SP_TRACE_HPP__SHANHAOBO_19800429__*/
